Generate all feature definition names used in DGN file for Terrains, Alignments and Profiles
The below code snippet shows generating the feature definitions names used in DGN file category wise for terrains, alignments, and profiles.
//Required References using System; using System.Collections.Generic; using Bentley.CifNET.SDK; using Bentley.CifNET.GeometryModel.SDK; using System.Diagnostics; using Bentley.MstnPlatformNET; public void GenerateUsedFeatureDefinitionNames() { try { //Get active DGN model Bentley.DgnPlatformNET.DgnModelRef dgnModel = Session.Instance.GetActiveDgnModelRef(); using (ConsensusConnection con = new ConsensusConnection(dgnModel)) { //Get geometric models IEnumerable<GeometricModel> activeGMs = con.GetAllGeometricModels(); //Feature definitions used for Terrains foreach (GeometricModel gm in activeGMs) { Trace.WriteLine("FeatureDefinitions used in Terrains: "); foreach (TerrainSurface terrain in gm.TerrainSurfaces) { if (terrain != null && terrain.FeatureDefinition != null && terrain.FeatureDefinition.Name.Trim() != "") { string fName = terrain.FeatureDefinition.Name.Substring(terrain.FeatureDefinition.Name.LastIndexOf("\\") + 1); Trace.WriteLine(fName); } } } //Feature definitions used for alignments foreach (GeometricModel gm in activeGMs) { Trace.WriteLine("FeatureDefinitions used in Alignments: "); foreach (Alignment alignment in gm.Alignments) { if (alignment != null && alignment.FeatureDefinition != null && alignment.FeatureDefinition.Name.Trim() != "") { string fName = alignment.FeatureDefinition.Name.Substring(alignment.FeatureDefinition.Name.LastIndexOf("\\") + 1); Trace.WriteLine(fName); } } } //Feature definitions used for profiles foreach (GeometricModel gm in activeGMs) { Trace.WriteLine("FeatureDefinitions used in Profiles: "); foreach (Alignment alignment in gm.Alignments) { IEnumerable<Profile> profiles = alignment.Profiles; foreach (Profile profile in profiles) { if (profile != null && profile.FeatureDefinition != null && profile.FeatureDefinition.Name.Trim() != "") { string fName = profile.FeatureDefinition.Name.Substring(profile.FeatureDefinition.Name.LastIndexOf("\\") + 1); Trace.WriteLine(fName); } } } } } } catch (Exception ex) { Trace.WriteLine(ex.Message); return; } }